
const db = require("../db")
const bcrypt = require("bcryptjs")
const jwt = require("jsonwebtoken")
const config = require("../config")

module.exports = {
    // 注册处理函数
    register(req, res) {
        // 1.接收数据
        const userinfo = req.body
        // 2.验证数据的合法性
        // if (!userinfo.username || !userinfo.password) {
        //     // return res.send({ status: 1, message: '用户名或密码为空' })
        //     return res.cc('用户名或密码为空')
        // }
        // 3.判断数据是否重复
        const sql = "select * from ev_users where username = ?"
        db.query(sql, userinfo.username, (err, result) => {
            // if (err) return res.send(err.message)
            if (err) return res.cc(err)
            if (result.length >= 1) {
                // return res.send({ status: 1, message: '用户名已经存在' })
                return res.cc('用户名已经存在')
            }

            // 4.新的业务场景:对密码加密 bcryptjs
            userinfo.password = bcrypt.hashSync(userinfo.password, 10)
            // 5.插入到数据库
            const sql = 'insert into ev_users set ?'
            db.query(sql, userinfo, (err, result) => {
                if (err) return res.cc(err)
                if (result.affectedRows != 1) return res.cc("注册失败")
                res.cc("注册成功", 0)
            })

        })
    },
    // 登录处理函数
    login(req, res) {
        // 1.验证数据的合法性,在局部中间件执行
        // 2.接收数据
        const userinfo = req.body

        // 3.根据用户名判断数据库中是否有这个人
        // 3.1.否: 返回 
        // 3.2.有: 判断密码是否相等
        const sql = "select * from ev_users where username = ?"
        db.query(sql, userinfo.username, (err, result) => {
            if (err) return res.cc(err)
            if (result.length !== 1) return res.cc('该用户名不存在')
            // console.log(result[0]);   
            const flag = bcrypt.compareSync(userinfo.password, result[0].password)
            if (!flag) return res.cc('密码错误')

            // 4.生成token
            let user = { ...result[0], password: "", user_pic: "" }
            const token = jwt.sign(user, config.jwtSecretKey, { expiresIn: config.jwtExpiresIn })

            // 5.返回登录成功的数据token
            res.send({
                status: 0,
                message: '登录成功',
                token: "Bearer " + token
            })

        })


        // 4.生成token

        // 5.返回登录成功的数据token


        // res.send('login ok')
    }
}